<?php
include $REP_CLASS . 'Selector.php';

class Message {

private $refmessage  = 0;
private $description;
private $typemessage;
private $typeinterlocuteur;
private $email;
private $textmessage;
private $refutilisateur;
private $assocPDO;
private $sqlInsert;
private $reqInsert;
private $sqlDelete;
private $reqDelete;
private $sqlUpdate;
private $reqUpdate;

/**
 * Constructeur
 * @db : la connexion de la base de donn?e
 */
 function __construct($db){

      // Cr?ation de la connexion
      $this->assocPDO = $db;
      // Initialisation des requ?tes
      $this->initRequete();
      // Pr?paration des requ?tes
      $this->prepare();

}
/**
 * Initialisation des requetes preparees
 */
private function initRequete(){

      $this->sqlInsert = "INSERT INTO message ( description, typemessage, typeinterlocuteur, email, textmessage,refutilisateur) VALUES( ?, ?, ?, ?, ?,?)";
      $this->sqlDelete = "DELETE FROM message WHERE `refmessage` = ?";
      $this->sqlUpdate = "UPDATE message SET refmessage=?, description=?, typemessage=?, typeinterlocuteur=?, email=?,refutilisateur=? textmessage=? WHERE `refmessage` = ?";

}
/**
 * Pr?paration des requetes
 */
private function prepare(){

      $this->reqInsert       = $this->assocPDO->prepare($this->sqlInsert);
      $this->reqDelete       = $this->assocPDO->prepare($this->sqlDelete);
      $this->reqUpdate       = $this->assocPDO->prepare($this->sqlUpdate);

}
/**
 * Insertion en base des infos de l'utilisateur
 */
public function insertion(){

      // Requete d'insertion
      $champs = array($this->description, $this->typemessage, $this->typeinterlocuteur, $this->email, $this->textmessage, $this->refutilisateur);

      try
      {
         return $this->reqInsert->execute($champs);
      }
      catch(Exception $e)
      {
         echo 'Erreur : <br>'; print_r($this->reqInsert->errorInfo());
         throw new Exception('Une erreur est survenue lors de l\'insertion dans message.' . $e->getMessage());
      }

}
/**
 * Modification des infos de l'utilisateur
 */
public function modification(){

      // Requete de modification
      $champs = array($this->refmessage, $this->description, $this->typemessage, $this->typeinterlocuteur, $this->email, $this->textmessage, $this->refutilisateur);

      try
      {
         return $this->reqUpdate->execute($champs);
      }
      catch(Exception $e)
      {
         echo 'Erreur : <br>'; print_r($this->reqUpdate->errorInfo());
         throw new Exception('Une erreur est survenue lors de la modification dans message.');
      }

}
/**
 * Suppression de l'utilisateur à partir de son ID
 */
public function suppression(){

      // Requete de suppression
      try
      {
         return $this->reqDelete->execute(array($this->refmessage));
      }
      catch(Exception $e)
      {
         echo 'Erreur : <br>'; print_r($this->reqDelete->errorInfo());
         throw new Exception('Une erreur est survenue lors de la suppression dans message.');
      }

}
/**
 * Select
 */
public function select(){

      $select = new Selector();
      $champs = array("refmessage"=>$this->refmessage, "description"=>$this->description, "typemessage"=>$this->typemessage, "typeinterlocuteur"=>$this->typeinterlocuteur, "email"=>$this->email, "textmessage"=>$this->textmessage, "refutilisateur"=>$this->refutilisateur);

      foreach($champs as $cle=>$valeur)
      {
        // Les Champs
        $select->addChamp($cle);
        // Les Crit?res
        if( !empty($valeur) )
         $select->addCritere($cle, $valeur);
      }

      // La Table
      $select->addFrom('message');

      //echo 'requete : ' . $select->toString();
      return $this->assocPDO->query($select->toString());

}
/**
 * Charge les infos de message
 */
public function charge(){

      $user = new Message($this->assocPDO);
      $user->setRefmessage($this->getRefmessage());
      // Lecture de la premi?re ligne
      $stmt = $user->select();
      $result = $stmt->fetch();

      $this->refmessage=$result['refmessage'];
	  $this->description=$result['description'];
	  $this->typemessage=$result['typemessage'];
	  $this->typeinterlocuteur=$result['typeinterlocuteur'];
	  $this->email=$result['email'];
	  $this->textmessage=$result['textmessage'];
	  $this->refutilisateur=$result['refutilisateur'];

      // Fermeture du curseur
      $stmt->closeCursor();

}
/**
 * Affiche les infos de l'utilisateur
 */
public function affichage(){

      $champs = array("refmessage"=>$this->refmessage, "description"=>$this->description, "typemessage"=>$this->typemessage, "typeinterlocuteur"=>$this->typeinterlocuteur, "email"=>$this->email, "textmessage"=>$this->textmessage, "refutilisateur"=>$this->refutilisateur);
      echo "==== Fiche Message ==== <br>";
      foreach($champs as $cle=>$valeur)
      {
        echo $cle . " : " . $valeur;
        echo "<br>";
      }
      echo "==========================<br>";

}
/**
 * Retrieves the value from the field refmessage
 * @return String with the value of the field
 */
public function getRefmessage(){
  return $this->refmessage;
}
/**
 * Retrieves the value from the field description
 * @return String with the value of the field
 */
public function getDescription(){
  return $this->description;
}
/**
 * Retrieves the value from the field typemessage
 * @return String with the value of the field
 */
public function getTypemessage(){
  return $this->typemessage;
}
/**
 * Retrieves the value from the field typeinterlocuteur
 * @return String with the value of the field
 */
public function getTypeinterlocuteur(){
  return $this->typeinterlocuteur;
}
/**
 * Retrieves the value from the field email
 * @return String with the value of the field
 */
public function getEmail(){
  return $this->email;
}
/**
 * Retrieves the value from the field textmessage
 * @return String with the value of the field
 */
public function getTextmessage(){
  return $this->textmessage;
}
/**
 * Retrieves the value from the field refutilisateur
 * @return String with the value of the field
 */
public function getRefutilisateur(){
  return $this->refutilisateur;
}
/**
 * Set the value from the field refmessage
 * @param refmessage String with the value for the field
 */
public function setRefmessage($refmessage){
  $this->refmessage = $refmessage;
}
/**
 * Set the value from the field description
 * @param description String with the value for the field
 */
public function setDescription($description){
  $this->description = $description;
}
/**
 * Set the value from the field typemessage
 * @param typemessage String with the value for the field
 */
public function setTypemessage($typemessage){
  $this->typemessage = $typemessage;
}
/**
 * Set the value from the field typeinterlocuteur
 * @param typeinterlocuteur String with the value for the field
 */
public function setTypeinterlocuteur($typeinterlocuteur){
  $this->typeinterlocuteur = $typeinterlocuteur;
}
/**
 * Set the value from the field email
 * @param email String with the value for the field
 */
public function setEmail($email){
  $this->email = $email;
}
/**
 * Set the value from the field textmessage
 * @param textmessage String with the value for the field
 */
public function setTextmessage($textmessage){
  $this->textmessage = $textmessage;
}
/**
 * Set the value from the field refutilisateur
 * @param textmessage String with the value for the field
 */
public function setRefutilisateur($refutilisateur){
  $this->refutilisateur = $refutilisateur;
}
}
?>